﻿namespace ONVIFRTSPFilter
{
    using System;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    [ComImport, TypeLibType((short) 2), Guid("547D37D7-1451-414E-BF20-706F38963B16"), ClassInterface((short) 0)]
    public class ONVIFRTSPFilterClass : IFileSourceFilter, ONVIFRTSPFilter, ITestControl
    {
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void ControlStream(int Control);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void GetCurFile([MarshalAs(UnmanagedType.LPWStr)] out string ppszFileName, out _AMMediaType pmt);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void GetEvents([MarshalAs(UnmanagedType.LPWStr)] ref string StepName);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void GetStreamHealth(ref int State);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void Load([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName, [In] ref _AMMediaType pmt);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void WaitForStableKey(ref double Length);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        public virtual extern void WaitForSync(ref int Length);
    }
}

